// UNKNOWN 默认是any的安全类型，泛型没有赋值的时候，默认就是unknown

let val:unknown = "11111";

// 默认情况下 unknown 必须要进行类型检测才能使用（类型检测,类型断言）

function processInput(val: unknown){
  if(typeof val === "string") {
    val.toString();
  } else if(typeof val === "number") {
    val.toFixed();
  }
}
let name:unknown = "JIANGWEN";
(name as string).toUpperCase();

// unknown 在联合类型中和交叉类型中的特点

type Unionunknown = unknown | string | null | undefined // 和任何类型做联合类型都是unknown

type Interunknown = unknown & string // 获取的类型是string  如果是any则返回的是any

// 区分类型是unknown还是any 可以采用交叉类型

type IKeyOf = keyof any; // 不能用keyof来取unknown
type IKeyOfU = keyof unknown; // 不能用keyof来取unknown



export {}